#include <unistd.h>
#include "ThreadPool.hpp"
#include "Task.hpp"

using namespace threadpool;

int main()
{
    // ThreadPool<Task> tp;
    // tp.Start();
    // int cnt = 10;
    // while (cnt)
    // {
    //     tp.EnQueue(Task());
    //     cnt--;
    // }
    // sleep(5);
    // tp.Stop();

    // tp.Join();

    ThreadPool<Task> *tp = nullptr;
    tp->GetInstance()->Start();
    int cnt = 10;
    while (cnt)
    {
        tp->GetInstance()->EnQueue(Task());
        cnt--;
    }
    sleep(5);
    tp->GetInstance()->Stop();

    tp->GetInstance()->Join();

    sleep(100);

    return 0;
}

// using namespace LogModule;

// int main()
// {
//     // LogStrategy *ls1 = new ConsoleLogStrategy();
//     // ls1->SyncLog("我是一条日志");
//     // ls1->SyncLog("我是一条日志");
//     // ls1->SyncLog("我是一条日志");
//     // ls1->SyncLog("我是一条日志");
//     // ls1->SyncLog("我是一条日志");

//     // LogStrategy *ls2 = new FileLogStrategy();
//     // ls2->SyncLog("我是一条日志");
//     // ls2->SyncLog("我是一条日志");
//     // ls2->SyncLog("我是一条日志");
//     // ls2->SyncLog("我是一条日志");
//     // ls2->SyncLog("我是一条日志");

//     // sleep(100);

//     // Log log;
//     // log.EnableConsoleLogStrategy();
//     // Log::LogInfo(&log, LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // Log::LogInfo(&log, LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // Log::LogInfo(&log, LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // Log::LogInfo(&log, LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // Log::LogInfo(&log, LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // log(LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // log(LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // log(LogLevel::DEBUG, "main.cc", 27) << "hello world";
//     // log(LogLevel::DEBUG, "main.cc", 27) << "hello world";

//     Enable_Console_log_Strategy();
//     // Enable_File_log_Strategy();
//     LOG(LogLevel::DEBUG) << "hello world" << 1 << 3.1415926;
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";

//     return 0;
// }